home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d12 / jaz_clib.arc / JZDSKSTS.C < prev    next >
Text File  |  1989-04-09  |  2KB  |  57 lines

  1. /*
  2. ┌────────────────────────────────────────────────────────────────────────────┐
  3. │Title     : csdsksts                                 │
  4. │Purpose : return 1 disk status byte                         │
  5. │                                         │
  6. │Parms                                         │
  7. │  fdrive   : 0..3 for FLOPPY DISKETTE DRIVES A,B,C,D                 │
  8. │  fdrive   : $80..$83 FOR FIXED DISK DRIVES  C,D,E,F ETC.             │
  9. │  fsector  : 1..9 . which sector to read                     │
  10. │  ftrack   : 0..42  which track to read                     │
  11. │  fhead    : 0..1   which head to read from                     │
  12. │  fnumsect : how many sectors to read                         │
  13. │                                         │
  14. │Notes: This routine reads a dummy sector into a dummy buffer because the    │
  15. │    disk status option returns the status of the previous read.         │
  16. │                                         │
  17. │Returns                                     │
  18. │  $80    -   Timeout                                 │
  19. │  $40    -   Bad Seek                                 │
  20. │  $20    -   Nec Controller failed                         │
  21. │  $10    -   Bad Crc                                 │
  22. │   $8    -   Attempt to cross 64k boundry                     │
  23. │   $4    -   Sector not found                             │
  24. │   $3    -   write protect                             │
  25. │   $2    -   address mark not found                         │
  26. │   $1    -   bad command                              │
  27. │   $0    -   Succsessful                              │
  28. │                                         │
  29. │written by Jack A. Zucker 75766,1336 (301) 794-5950                 │
  30. │                                         │
  31. └────────────────────────────────────────────────────────────────────────────┘
  32. */
  33.  
  34. #include <jaz.h>        /* include register defs */
  35. jzdsksts(fdrive)
  36. int fdrive;
  37. {
  38.   TREG wreg;
  39.   char wbuf[512];        /* buffer for sector read */
  40.   int weseg,w;
  41.  
  42.   weseg = getes();        /* get value of extra segment */
  43.  
  44.   for (w = 0 ; w < 3 ; w ++ ) { /* allow 3 retries */
  45.     wreg.x.ax = 0x201;          /* read 1 sector */
  46.     wreg.h.dh = 0;          /* get head number */
  47.     wreg.h.dl = fdrive;       /* get users drive */
  48.     wreg.x.cx = 1;          /* ch = track,cl = sector number */
  49.     wreg.x.es = weseg;          /* segment of buffer */
  50.     wreg.x.bx = (int) wbuf;      /* offset of wbuf    */
  51.     intr(0x13,&wreg);
  52.     if (! (wreg.x.flags & 1))      /* we got a good read */
  53.       return(0);          /* indicate it with a zero status */
  54.   }
  55.   return(wreg.h.ah);          /* at this point we have a disk error */
  56. }
  57.